#ifndef OUTLINE_HPP
#define OUTLINE_HPP

//------------------------------------------------------------------------------
// Fichier d'entête utilisés
//------------------------------------------------------------------------------
#include <list>

namespace ImageAnalysis
{

//----------------------------------------------------------------------
//
//----------------------------------------------------------------------
class Outline
{
public:
		//----------------------------------------------------------------------
		// Structure
		//----------------------------------------------------------------------
		typedef std::list< int >::iterator TOutlineIterator;

		//----------------------------------------------------------------------
		// Constructeur
		//----------------------------------------------------------------------
		Outline( );
		
		//----------------------------------------------------------------------
		// Destructeur
		//----------------------------------------------------------------------
		virtual ~Outline();

		//----------------------------------------------------------------------
		// 
		//----------------------------------------------------------------------
		int GetNumberOfIndex( );
		
		//----------------------------------------------------------------------
		// 
		//----------------------------------------------------------------------
		void AddIndexBeforeStart( int index );

		//----------------------------------------------------------------------
		// 
		//----------------------------------------------------------------------
		void AddIndexAfterEnd( int index );

		//----------------------------------------------------------------------
		// Méthode 
		//----------------------------------------------------------------------
		TOutlineIterator GetStartIndex( ){ return pixelIndexList.begin(); }

		//----------------------------------------------------------------------
		// 
		//----------------------------------------------------------------------
		TOutlineIterator GetEndIndex() { return pixelIndexList.end(); }
	
private:
		//----------------------------------------------------------------------
		//
		//----------------------------------------------------------------------
		typedef std::list<int> TIndexList;
		TIndexList pixelIndexList;
		
		//----------------------------------------------------------------------
		// Constructeur par copie et oprérateur d'affectation en privée pour
		// interdire leur utilisation
		//----------------------------------------------------------------------
		Outline( const Outline& copy);
		Outline& operator=( const Outline& copy );
};

}

#endif //OUTLINE_HPP
